/*
 * File:   IStorageSync.h
 * Author: ClockMan
 *
 * Created on 9 wrzesień 2012, 15:23
 */

#ifndef ISTORAGESYNC_H
#define	ISTORAGESYNC_H

namespace CSDatabaseLib {

	/**
	 * Enum opisujący typ zasobu.
	 */
    typedef enum {
        ETYPE_ERROR,
        ETYPE_NONE,
        ETYPE_FILE,
        ETYPE_FOLDER
    } EType;

    /** Interfejs do synchronizacji przy użyciu storage*/
    class IStorageSync {
    public:
        /**
         * Wymusza pobranie nformacji o zasobie z storage.
         * @param storageId identyfikator magazynu
         * @param link nazwa linku
         * @return typ zasobu
         */
        virtual EType SyncInfo(uint32_t storageId, const std::string &link) = 0;
        
        /**
         * Wymusza pobranie nformacji o zasobie z storage.
         * @param storageId
         * @param parentLink
         * @param name
         * @return typ zasobu
         */
        virtual EType SyncInfo(uint32_t storageId, const std::string &parentLink, const std::string &name) = 0;
        
        /**
         * Wymusza pobranie nformacji o zasobie z storage. Przeprowadza synchronizację folderu
         * @param storageId
         * @param link
         * @return  typ zasobu
         */
        virtual EType SyncFolder(uint32_t storageId, const std::string &link) = 0;
    };
};
#endif	/* ISTORAGESYNC_H */

